
// class 是 function的语法糖
// class Foo {
//   name: string
//   city: string

//   constructor(name: string) {
//     this.name = name
//   }

//   getName() {
//     return this.name
//   }
// }

// new的一个过程
// 1. 创建一个空对象，继承构造函数的原型
// 2. 执行构造函数 （将obj 作为 this）
// 3. 返回obj

// ts 泛型
export function customNew<T>(constructor: Function, ...args: any[]): T { 
  // 创建一个空对象，继承构造函数的原型
  const obj = Object. create(constructor.prototype)
  // 执行构造函数 （将obj 作为 this）
  constructor.apply(obj, args)
  return obj
}

